package demo1;

public class DataType {
    public static void main(String[] args) {
        //数据类型可以分为基本数据类型和引用数据类型
        //基本数据类型直接存储在栈内存中，而引用数据类型的变量则存储在栈内存中，但它所指向的对象实体是存储在堆内存中的。
        // 例如，一个String类型的对象，变量本身在栈内存有一个引用，而实际的字符串对象则存放在堆内存。

        //基本数据类型在内存中占用固定的字节数。比如byte类型占用1个字节，int类型占用4个字节等。
        // 而引用数据类型的大小则取决于对象的实际内容以及Java虚拟机（JVM）的实现。

        //在传递方式上，两者也存在差异。当基本数据类型作为参数传递给一个方法时，传递的是实际的值。
        // 这意味着在方法内部对这个参数的修改不会影响到外部的变量。

        //在初始化方面，基本数据类型在定义时就可以直接初始化，并且有默认的初始值（如果没有显式初始化的话）。
        // 例如，int类型的默认初始值是0，boolean类型的默认初始值是false。引用数据类型在定义时如果没有初始化，默认值为null，表示不指向任何对象。

        //从比较方式来看，基本数据类型使用==比较的是值是否相等。而引用数据类型使用==比较的是引用（地址）是否相等，
        // 如果要比较引用类型对象的内容是否相等，通常需要使用对象特定的equals()方法（对于大多数Java类而言）。

        //基本数据类型：int、double、char、boolean、long、float、byte、short
        //所占字节：     4、   8、    2、     1、    8、    4、   1、    2

        //什么是引用：引用是指向内存地址的指针，它不是数据，而是内存地址的别名。
        // 引用类型：String、Array、Class、Interface(接口)、Object、Enum、Annotation
        String str = "Hello World";
        System.out.println(str);

        System.out.println("byte取值范围:"+Byte.MIN_VALUE+"至"+Byte.MAX_VALUE);
        System.out.println("short取值范围:"+Short.MIN_VALUE+"至"+Short.MAX_VALUE);
        System.out.println("int取值范围:"+Integer.MIN_VALUE+"至"+Integer.MAX_VALUE);
        System.out.println("long取值范围:"+Long.MIN_VALUE+"至"+Long.MAX_VALUE);
        System.out.println("float取值范围:"+Float.MIN_VALUE+"至"+Float.MAX_VALUE);
        System.out.println("double取值范围:"+Double.MIN_VALUE+"至"+Double.MAX_VALUE);

    }
}
